---
title: SAIF.Business.Policy database tables
summary: Database tables used by this library with relationships and usage context.
status: draft
owner: SAIF Claims BOF team
last_reviewed: 2026-08-21
library: SAIF.Business.Policy
reference_type: embedded
---

# SAIF.Business.Policy database tables

This page catalogs Oracle database tables accessed by `SAIF.Business.Policy`. All access is read-only — this library owns no `INSERT`/`UPDATE`/`DELETE` SQL.

## Table catalog

| Table | Database | Schema/Link | CRUD | Purpose | Primary business object |
| --- | --- | --- | --- | --- | --- |
| [HAZARD_GROUP](#hazard_group) | Oracle | `[unqualified]**` | R | Hazard-group code/rate classification records | `clsHazardGroupCollection` |
| [BENEFIT_JURISDICTION_CODE](#benefit_jurisdiction_code) | Oracle | `[unqualified]**` | R | Benefit-jurisdiction code/description lookup | `clsBenefitJurisdictionCodeMap` |
| [MANUAL_CLASS_TYPE_CODE](#manual_class_type_code) | Oracle | `[unqualified]**` | R | Manual-class-type code/description lookup | `clsManualClassTypeCodeMap` |
| [POLICY_PERIOD](#policy_period) | Oracle | `[unqualified]**` | R | Policy-period effective/expiration/anniversary dates | `PolicyInformation`* |
| [POLICY_PERIOD_NON_WCIS](#policy_period_non_wcis) | Oracle | `[unqualified]**` | R | Policy-period dates for non-WCIS policies (parallel source) | `PolicyInformation`* |
| [POLICY](#policy) | Oracle | `[unqualified]**` | R | Policy header data (market type) | `PolicyInformation`* |
| [PREM_HIST_SUMMARY](#prem_hist_summary) | Oracle | `[unqualified]**` | R | Premium history summary set lookup | `PolicyInformation`* |
| [ENDORSEMENT](#endorsement) | Oracle | `[unqualified]**` | R | Endorsement records (information-page print check) | `PolicyInformation`* |

## HAZARD_GROUP

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Stores hazard-group code/rate classification records with effective/expiration date windows. |
| **Access pattern** | Direct SQL (BOF `Criteria.RetrieveSQL`) |
| **CRUD operations** | Read |
| **Key columns used** | `HAZARD_GROUP_ID`, `NCCI_HAZARD_GROUP_CODE`, `EFFECTIVE_DATE`, `EXPIRATION_DATE`, `HAZARD_GROUP_SHORT_DESCR`, `HAZARD_GROUP_LONG_DESCR`, `CREATE_DATE`, `CREATE_USER`, `UPDATE_DATE`, `UPDATE_USER` |
| **Sequence** | N/A |
| **Related tables** | None (standalone reference table) |
| **Business objects** | `clsHazardGroup`, `clsHazardGroupCollection` |

### Operations referencing this table
- [Retrieve hazard groups effective on a date](operations/retrieve-hazard-groups-effective-on-a-date.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-002: Hazard group retrieve](sql/SQL-002-hazard-group-retrieve.md)

---

## BENEFIT_JURISDICTION_CODE

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Code/description reference table mapped to the `BenefitJurisdictions` enum (State/Federal). |
| **Access pattern** | Direct SQL (constructor literal, executed via the framework's `Fill(inDPI, sql)` helper) |
| **CRUD operations** | Read |
| **Key columns used** | `code`, `code_descr` |
| **Sequence** | N/A |
| **Related tables** | None |
| **Business objects** | `clsBenefitJurisdictionCodeMap` |

### Operations referencing this table
- [Resolve or cache benefit-jurisdiction code table](operations/resolve-or-cache-benefit-jurisdiction-code-table.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-001: Benefit jurisdiction code lookup](sql/SQL-001-benefit-jurisdiction-code-lookup.md)

---

## MANUAL_CLASS_TYPE_CODE

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Code/description reference table mapped to the `ManualClassTypes` enum. Only 5 of ~15 codes are actively mapped in this library's code; the remainder are dead code (commented out) and excluded from findings. |
| **Access pattern** | Direct SQL (constructor literal, executed via the framework's `Fill(inDPI, sql)` helper) |
| **CRUD operations** | Read |
| **Key columns used** | `code`, `code_descr` |
| **Sequence** | N/A |
| **Related tables** | None |
| **Business objects** | `clsManualClassTypeCodeMap` |

### Operations referencing this table
- [Resolve or cache manual-class-type code table](operations/resolve-or-cache-manual-class-type-code-table.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-003: Manual class type code lookup](sql/SQL-003-manual-class-type-code-lookup.md)

---

## POLICY_PERIOD

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Policy period records used to derive anniversary rate date, effective date, and expiration date. |
| **Access pattern** | Direct SQL (`PolicyInformation.SQL` inline/string-concatenated statements) |
| **CRUD operations** | Read |
| **Key columns used** | `POLICY_NUM`, `POLICY_PERIOD_EFF_DATE`, `POLICY_PERIOD_EXP_DATE`, `ANNIVERSARY_RATE_DATE` |
| **Sequence** | N/A |
| **Related tables** | `POLICY_PERIOD_NON_WCIS` (parallel/alternative source via `UNION`), `POLICY` (inferred one-to-many via `POLICY_NUM`) |
| **Business objects** | `PolicyInformation`* |

### Operations referencing this table
- [Determine anniversary rate date](operations/determine-anniversary-rate-date.md)
- [Determine maximum policy effective date](operations/determine-maximum-policy-effective-date.md)
- [Determine policy-period expiration date](operations/determine-policy-period-expiration-date.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-004: Policy period anniversary rate date](sql/SQL-004-policy-period-anniversary-rate-date.md)
- [SQL-008: Max policy effective date](sql/SQL-008-max-policy-effective-date.md)
- [SQL-011: Policy period expiration date](sql/SQL-011-policy-period-expiration-date.md)

---

## POLICY_PERIOD_NON_WCIS

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Parallel policy-period source for non-WCIS policies, unioned with `POLICY_PERIOD` in scalar lookups. |
| **Access pattern** | Direct SQL (`UNION` counterpart of `POLICY_PERIOD` statements) |
| **CRUD operations** | Read |
| **Key columns used** | `POLICY_NUM`, `POLICY_PERIOD_EFF_DATE`, `POLICY_PERIOD_EXP_DATE`, `ANNIVERSARY_RATE_DATE` |
| **Sequence** | N/A |
| **Related tables** | `POLICY_PERIOD` (parallel/alternative source, same shape, not a join) |
| **Business objects** | `PolicyInformation`* |

### Operations referencing this table
- [Determine anniversary rate date](operations/determine-anniversary-rate-date.md)
- [Determine policy-period expiration date](operations/determine-policy-period-expiration-date.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-004: Policy period anniversary rate date](sql/SQL-004-policy-period-anniversary-rate-date.md)
- [SQL-011: Policy period expiration date](sql/SQL-011-policy-period-expiration-date.md)

---

## POLICY

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Policy header table used to look up the market type code for a policy. |
| **Access pattern** | Direct SQL (`PolicyInformation.SQL.GetMarketType`) |
| **CRUD operations** | Read |
| **Key columns used** | `POLICY_NUM`, `MARKET_TYPE_CODE` |
| **Sequence** | N/A |
| **Related tables** | `POLICY_PERIOD` (inferred one-to-many via `POLICY_NUM`, no JOIN present), `PREM_HIST_SUMMARY` (inferred), `ENDORSEMENT` (inferred) |
| **Business objects** | `PolicyInformation`* |

### Operations referencing this table
- [Determine market type](operations/determine-market-type.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-005: Policy market type lookup](sql/SQL-005-policy-market-type-lookup.md)

---

## PREM_HIST_SUMMARY

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Premium history summary records used to determine the maximum premium-history set ID for a policy period. |
| **Access pattern** | Direct SQL (`PolicyInformation.MaxPremiumHistorySetId`) |
| **CRUD operations** | Read |
| **Key columns used** | `POLICY_NUM`, `POLICY_PERIOD_EFF_DATE`, `PREM_HIST_TYPE_CODE`, `PREM_HIST_SET_ID` |
| **Sequence** | N/A |
| **Related tables** | `POLICY` (inferred one-to-many via `POLICY_NUM`, no JOIN present) |
| **Business objects** | `PolicyInformation`* |

### Operations referencing this table
- [Determine maximum premium-history set ID](operations/determine-maximum-premium-history-set-id.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-009: Max premium history set ID](sql/SQL-009-max-premium-history-set-id.md)

---

## ENDORSEMENT

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Endorsement records used to check whether the policy information page (`P401`) was printed. |
| **Access pattern** | Direct SQL (`PolicyInformation.IsInformationPagePrinted`) |
| **CRUD operations** | Read |
| **Key columns used** | `POLICY_NUM`, `POLICY_PERIOD_EFF_DATE`, `ENDORSE_CODE`, `PRINTED_DATE` |
| **Sequence** | N/A |
| **Related tables** | `POLICY` (inferred one-to-many via `POLICY_NUM`, no JOIN present) |
| **Business objects** | `PolicyInformation`* |

### Operations referencing this table
- [Determine whether the information page was printed](operations/determine-whether-the-information-page-was-printed.md)

### Business rules referencing this table
_None._

### SQL referencing this table
- [SQL-007: Information page printed check](sql/SQL-007-information-page-printed-check.md)

---

## Table relationship diagram

No explicit `JOIN` clauses were found anywhere in this library's SQL — all multi-table statements are either a correlated subquery or a `UNION` of two structurally parallel tables. The relationships below are inferred from shared `POLICY_NUM` column naming, not confirmed by JOIN syntax.*

```mermaid
erDiagram
    POLICY ||--o{ POLICY_PERIOD : "POLICY_NUM (inferred)"
    POLICY ||--o{ PREM_HIST_SUMMARY : "POLICY_NUM (inferred)"
    POLICY ||--o{ ENDORSEMENT : "POLICY_NUM (inferred)"
    POLICY_PERIOD ||--|| POLICY_PERIOD_NON_WCIS : "UNION (parallel source)"
    POLICY {
        NUMBER POLICY_NUM PK
        VARCHAR2 MARKET_TYPE_CODE
    }
    POLICY_PERIOD {
        NUMBER POLICY_NUM FK
        DATE POLICY_PERIOD_EFF_DATE
        DATE POLICY_PERIOD_EXP_DATE
        DATE ANNIVERSARY_RATE_DATE
    }
    POLICY_PERIOD_NON_WCIS {
        NUMBER POLICY_NUM FK
        DATE POLICY_PERIOD_EFF_DATE
        DATE POLICY_PERIOD_EXP_DATE
        DATE ANNIVERSARY_RATE_DATE
    }
    PREM_HIST_SUMMARY {
        NUMBER POLICY_NUM FK
        DATE POLICY_PERIOD_EFF_DATE
        VARCHAR2 PREM_HIST_TYPE_CODE
        NUMBER PREM_HIST_SET_ID
    }
    ENDORSEMENT {
        NUMBER POLICY_NUM FK
        DATE POLICY_PERIOD_EFF_DATE
        VARCHAR2 ENDORSE_CODE
        DATE PRINTED_DATE
    }
```

`HAZARD_GROUP`, `BENEFIT_JURISDICTION_CODE`, and `MANUAL_CLASS_TYPE_CODE` are standalone code/reference tables with no relationship evidence to any other table referenced in this library.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `SAIF.Business.Policy\clsHazardGroup.vb`
- `SAIF.Business.Policy\clsHazardGroupCollection.vb`
- `SAIF.Business.Policy\PolicyInformation.vb`
- `SAIF.Business.Policy\CodeMaps\clsBenefitJurisdictionCodeMap.vb`
- `SAIF.Business.Policy\CodeMaps\clsManualClassTypeCodeMap.vb`
